搭配Day1提到的功能,先建立使用者資訊,所以這裡示範的是UserService
dotnet add package MongoDB.Driver
connection string可以直接從Atlas MongoDB獲得
{
  "MongoDbSettings": {
    "ConnectionString": "<connection string>",
    "DatabaseName": "<database name>"
  },
}
定義類別
public class MongoDbSettings
{
    public string ConnectionString { get; set; } = null!;
    public string DatabaseName { get; set; } = null!;
}
這個是因為我懶得在每一個service裡,再寫一次連線,所以把collection集中起來。
有先在Models下建立User類別的定義了,所以可以直接在這裡用:
public class AppMongoDbContext
{
    private readonly IMongoDatabase _database;
    public AppMongoDbContext(IOptions<MongoDbSettings> settings)
    {
        var client = new MongoClient(settings.Value.ConnectionString);
        _database = client.GetDatabase(settings.Value.DatabaseName);
    }
    public IMongoCollection<User> Users => _database.GetCollection<User>("Users");
    // 加入更多的collection
}
var builder = WebApplication.CreateBuilder(args);
// 下面兩行
builder.Services.Configure<MongoDbSettings>(
    builder.Configuration.GetSection("MongoDbSettings"));
builder.Services.AddSingleton<AppMongoDbContext>()
public class UserService
{
    private readonly IMongoCollection<User> _users;
    public UserService(AppMongoDbContext dbContext)
    {
        _users = dbContext.Users;
    }
    public async Task<List<User>> GetUserAsync() => await _users.Find(user => true).ToListAsync();
}
處理資料庫連線
原本想講一下結構寫法的,但今天在處理連線的部分,就先分享了,真的是程式寫到哪,文章跟著寫什麼,非常隨性
 雖然可以用mongosh直接建collection,但已經習慣用orm自動/手動migrate,感覺要找一下這邊怎麼用